﻿using System;
using Catel.Articles.Base.UI.Windows;

namespace Catel.Articles.Base.Data.Attributes
{
    /// <summary>
    /// Attribute to decorate an example class so it is automatically included in the examples collection of
    /// the <see cref="ExamplesWindow"/>.
    /// </summary>
    [AttributeUsage(AttributeTargets.Class)]
    public class ExampleAttribute : Attribute
    {
        #region Variables
        #endregion

        #region Constructor & destructor
        /// <summary>
        /// Initializes a new instance of the <see cref="ExampleAttribute"/> class.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="shortDescription">The short description.</param>
        public ExampleAttribute(string name, string shortDescription)
        {
            // Store values
            Name = name;
            ShortDescription = shortDescription;
        }
        #endregion

        #region Properties
        /// <summary>
        /// Gets the name.
        /// </summary>
        /// <value>The name.</value>
        public string Name { get; private set; }

        /// <summary>
        /// Gets the short description.
        /// </summary>
        /// <value>The short explanation.</value>
        public string ShortDescription { get; private set; }

        /// <summary>
        /// Gets or sets the long description.
        /// </summary>
        /// <value>The large explanation.</value>
        public string LongDescription { get; set; }

        /// <summary>
        /// Gets or sets the image Uri. This Uri will be used to show an image. If the Uri is <c>null</c>, no image will
        /// be shown with the example.
        /// </summary>
        /// <value>The image Uri.</value>
        public string ImageUri { get; set; }

        /// <summary>
        /// Gets or sets the relative file name of the code.
        /// </summary>
        /// <value>The relative file name of the code.</value>
        public string SourceFileName { get; set; }

        /// <summary>
        /// Gets or sets the name of the click handler.
        /// </summary>
        /// <value>The name of the click handler.</value>
        public string ClickHandlerName { get; set; }
        #endregion

        #region Methods
        #endregion
    }
}
